#ifndef PARAMETERS_HH
#define PARAMETERS_HH

#include <string>
#include <vector>
#include <map>

class Parameters
{
private:

  static Parameters *instance;

protected:
  Parameters();

  // temp
  typedef std::map<std::string,double> doubleParameters_type;
  doubleParameters_type doubleParameters;
  typedef std::map<std::string, std::vector<double> > doubleVectorParameters_type;
  doubleVectorParameters_type doubleVectorParameters;
  typedef std::map<std::string,std::string> stringParameters_type;
  stringParameters_type stringParameters;
  typedef std::map<std::string,int> intParameters_type;
  intParameters_type intParameters;
  typedef std::map<std::string,bool> boolParameters_type;
  boolParameters_type boolParameters;

public:
  virtual ~Parameters();

  static Parameters* getInstance();
  
  double getDouble(const std::string key);
  std::vector<double> getDoubleVector(const std::string key);
  int getInt(const std::string key);
  bool getBool(const std::string key);
  std::string getString(const std::string key);
};

#endif
